export default {
  namespaced: true,
  state() {
    // 先从本地获取
    const addressStr = uni.getStorageSync('101-address')
    const userinfoStr = uni.getStorageSync('101-userinfo')
    return {
      token: uni.getStorageSync('101-token') || '',
      address: addressStr ? JSON.parse(addressStr) : {},
      userinfo: userinfoStr ? JSON.parse(userinfoStr) : {},
      // 重定向的信息对象，包含属性： { url, type }
      redirectInfo: null,
    }
  },
  mutations: {
    // 1. 设置收货地址
    setAddress(state, newAddress) {
      state.address = newAddress
      // 持久化到本地
      uni.setStorageSync('101-address', JSON.stringify(state.address))
    },
    // 2. 更新用户的基本信息
    updateUserInfo(state, userinfo) {
      state.userinfo = userinfo
      // 持久化到本地缓存
      uni.setStorageSync('101-userinfo', JSON.stringify(state.userinfo))
    },
    // 3. 更新token信息
    setToken(state, token) {
      state.token = token
      // 持久化到本地缓存
      uni.setStorageSync('101-token', state.token)
    },
    // 4. 设置重定向的对象信息
    setRedirectInfo(state, redirectInfo) {
      state.redirectInfo = redirectInfo
    },
  },
  actions: {
    logout(ctx) {
      ctx.commit('setAddress', {})
      ctx.commit('updateUserInfo', {})
      ctx.commit('setToken', '')
    },
  },
  getters: {
    // 收货详细地址的计算属性
    fullAddress(state) {
      const { provinceName, cityName, countyName, detailInfo } = state.address
      if (!provinceName) return ''
      // 拼接 省，市，区，详细地址 的字符串并返回给用户
      return provinceName + cityName + countyName + detailInfo
    },
  },
}
